﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Drawing;
using PdfSharp;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using System.Data;

/// <summary>
/// Summary description for PaymentReceiptPDFOutput
/// </summary>
public class CashInstallmentPDFOutput
{
    private string _carPlate = "";
    public string CarPlate
    {
        get { return _carPlate; }
        set { _carPlate = value; }
    }

    private string _contractNo = "";
    public string ContractNo
    {
        get { return _contractNo; }
        set { _contractNo = value; }
    }

    private string _premium1 = "";
    public string Premium1
    {
        get { return _premium1; }
        set { _premium1 = value; }
    }

    private string _premium2 = "";
    public string Premium2
    {
        get { return _premium2; }
        set { _premium2 = value; }
    }

    private string _premium3 = "";
    public string Premium3
    {
        get { return _premium3; }
        set { _premium3 = value; }
    }

    private string _noOfInstall = "";
    public string NoOfInstall
    {
        get { return _noOfInstall; }
        set { _noOfInstall = value; }
    }

    private string _install1 = "";
    public string Install1
    {
        get { return _install1; }
        set { _install1 = value; }
    }

    private string _install2 = "";
    public string Install2
    {
        get { return _install2; }
        set { _install2 = value; }
    }

    private string _install3 = "";
    public string Install3
    {
        get { return _install3; }
        set { _install3 = value; }
    }

    private string _install4 = "";
    public string Install4
    {
        get { return _install4; }
        set { _install4 = value; }
    }

    private string _installDate1 = "";
    public string InstallDate1
    {
        get { return _installDate1; }
        set { _installDate1 = value; }
    }

    private string _installDate2 = "";
    public string InstallDate2
    {
        get { return _installDate2; }
        set { _installDate2 = value; }
    }

    private string _installDate3 = "";
    public string InstallDate3
    {
        get { return _installDate3; }
        set { _installDate3 = value; }
    }

    private string _installDate4 = "";
    public string InstallDate4
    {
        get { return _installDate4; }
        set { _installDate4 = value; }
    }

    private bool _isSCB;
    public bool IsSCB
    {
        get { return _isSCB; }
        set { _isSCB = value; }
    }

    private bool _isBBL;
    public bool IsBBL
    {
        get { return _isBBL; }
        set { _isBBL = value; }
    }

    private bool _isKBank;
    public bool IsKBank
    {
        get { return _isKBank; }
        set { _isKBank = value; }
    }

    private bool _isKTB;
    public bool IsKTB
    {
        get { return _isKTB; }
        set { _isKTB = value; }
    }

    private bool _isIncludeCMI = false;
    public bool IsIncludeCMI
    {
        get { return _isIncludeCMI; }
        set { _isIncludeCMI = value; }
    }

    private DateTime dateTimeNow = CE.Global.General.GetUTCDateTime(); 

    public CashInstallmentPDFOutput()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    public string GeneratePDF()
    {
        XPrivateFontCollection privateFontCollection = XPrivateFontCollection.Global;
        Uri fontUri = new Uri(MappedApplicationPath + "fonts\\");
        LoadPrivateFont(privateFontCollection, fontUri, "./#TH Sarabun New"); 

        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        // Set font encoding to unicode

        XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);

        document.Info.Title = "Created with PDFsharp";

        // Create an empty page
        PdfPage page = document.AddPage();

        // Get an XGraphics object for drawing
        XGraphics gfx = XGraphics.FromPdfPage(page);

        //XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);

        // Create a font
        XFont fontHeader = new XFont("TH Sarabun New", 16, XFontStyle.Bold, options);
        XFont fontTitle = new XFont("TH Sarabun New", 14, XFontStyle.Bold, options);
        XFont fontComment = new XFont("TH Sarabun New", 12, XFontStyle.Bold, options);
        XFont fontTitleUnderline = new XFont("TH Sarabun New", 12, XFontStyle.Bold | XFontStyle.Underline, options);
        XFont font = new XFont("TH Sarabun New", 12, XFontStyle.Regular, options);
        XFont fontAddress = new XFont("TH Sarabun New", 12, XFontStyle.Regular, options);
        XFont fontBox = new XFont("Angsana NEW", 22, XFontStyle.Bold, options);
        //XFont fontChkedBox = new XFont("Arial Unicode MS", 12, XFontStyle.Regular, options);
        //XFont fontFooter = new XFont("Cordia New", 11, XFontStyle.Bold, options);
        XColor _xcolor = new XColor();
        _xcolor.R = 0;
        _xcolor.G = 0;
        _xcolor.B = 0;

        //System.Drawing.Rectangle _rect = new System.Drawing.Rectangle(40, 60, 535, 630);
        //System.Drawing.Rectangle _rect2 = new System.Drawing.Rectangle(40, 690, 535, 65);
        XRect _rect = new XRect(40, 60, 535, 630);
        XRect _rect2 = new XRect(40, 690, 535, 65);
        XPen _pen = new XPen(_xcolor);
        // Draw the text
        //gfx.DrawRectangle(_pen, _rect);
        //gfx.DrawString("Hello, World!", font, XBrushes.Black,
        //  new XRect(15, 15, 15, 15),
        //  XStringFormats.TopLeft);

        int curX = 50;
        int curY = 40;
        int lineSpace = 18;
        gfx.DrawRectangle(_pen, _rect);
        gfx.DrawRectangle(_pen, _rect2);

        //gfx.DrawImage(XImage.FromFile(AppDomain.CurrentDomain.BaseDirectory + "/images/logos/gluaygluay.png"), new XRect(curX + 400, 50, 39, 27));
        //gfx.DrawImage(XImage.FromFile(AppDomain.CurrentDomain.BaseDirectory + "/images/public/logo/gluaygluay.png"), new XRect(curX, curY, 83, 73));
        //curY += 20;

        gfx.DrawString("ใบคำขอสินเชื่อ", fontHeader, XBrushes.Black, new XRect(curX + 200, curY, 50, 20), XStringFormat.TopLeft);
        curY += 25;

        gfx.DrawString("ทะเบียนรถยนต์ " + _carPlate, font, XBrushes.Black, new XRect(curX + 220, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("เลขที่สัญญา " + _contractNo, font, XBrushes.Black, new XRect(curX + 400, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;

        gfx.DrawString("บัตรประจำตัวประชาชน", font, XBrushes.Black, new XRect(curX, curY+10, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("", fontBox, XBrushes.Black, new XRect(curX + 80, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("เกิดวันที่", font, XBrushes.Black, new XRect(curX+305, curY + 10, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("", fontBox, XBrushes.Black, new XRect(curX + 330, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("เดือน", font, XBrushes.Black, new XRect(curX + 363, curY + 10, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("", fontBox, XBrushes.Black, new XRect(curX + 380, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("พ.ศ.", font, XBrushes.Black, new XRect(curX + 412, curY + 10, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("", fontBox, XBrushes.Black, new XRect(curX + 425, curY, 50, 20), XStringFormat.TopLeft);
        curY += 25;



        gfx.DrawString("ผู้เอาประกัน ชื่อ(นาย/นาง/นางสาว/อื่นๆ ระบุ……………….) ………………………………….. นามสกุล…………………………………………….", font, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += 25;

        //gfx.DrawString("Silom Soi 9 Silom Road Bangrak", fontFooter, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("ที่อยู่ปัจจุบันเลขที่               หมู่ที่      หมู่บ้าน/อาคาร                                    หมายเลขห้อง                    ซอย               ", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ถนน                  ตำบล/แขวง                             อำเภอ/เขต                      จังหวัด                            รหัสไปษณีย์", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("โทรศัพท์ (บ้าน)                        โทรศัพท์ (ที่ทำงาน)                  โทรศัพท์มือถือ", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("สถานที่อยู่:    เจ้าของบ้าน   บ้านบิดา-มารดา   บ้านญาติ   บ้านพักสวัสดิการ   เช่า-เอกชน   เช่าการเคหะ   อื่น ๆ", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("สถานที่จัดส่งเอกสาร: ที่อยู่ปัจจุบัน   ที่อื่น ๆ (โปรดระบุ)", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += 20;

        gfx.DrawString("บุคคลที่สามารถติดต่อแทนท่านได้กรณีฉุกเฉิน", fontTitle, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ชื่อ-สกุล                                                                         ความสัมพันธ์                                                   โทรศัพท์", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += 25;

        gfx.DrawString("จำนวนเงินในการขอสินเชื่อค่าเบี้ยประกันภัย", fontTitle, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("เบี้ยประกันภัยสุทธิ ", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_premium1, fontTitle, XBrushes.Black, new XRect(curX + 65, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(" บาท เบี้ยประกันภัยรวมภาษีอากร ", fontAddress, XBrushes.Black, new XRect(curX + 110, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_premium2, fontTitle, XBrushes.Black, new XRect(curX + 230, curY, 50, 20), XStringFormat.TopLeft);
        if (!_isIncludeCMI)
        {
            gfx.DrawString(" บาท เบี้ยประกันภัยที่ขอสินเชื่อ ", fontAddress, XBrushes.Black, new XRect(curX + 275, curY, 50, 20), XStringFormat.TopLeft);
            gfx.DrawString(_premium3, fontTitle, XBrushes.Black, new XRect(curX + 380, curY, 50, 20), XStringFormat.TopLeft);
            gfx.DrawString(" บาท", fontAddress, XBrushes.Black, new XRect(curX + 425, curY, 50, 20), XStringFormat.TopLeft);
        }
        else
        {
            gfx.DrawString(" บาท เบี้ยประกันภัยที่ขอสินเชื่อ(รวม พรบ.) ", fontAddress, XBrushes.Black, new XRect(curX + 275, curY, 50, 20), XStringFormat.TopLeft);
            gfx.DrawString(_premium3, fontTitle, XBrushes.Black, new XRect(curX + 420, curY, 50, 20), XStringFormat.TopLeft);
            gfx.DrawString(" บาท", fontAddress, XBrushes.Black, new XRect(curX + 460, curY, 50, 20), XStringFormat.TopLeft);
        }
        curY += lineSpace;
        gfx.DrawString("ขอผ่อนชำระเป็นงวด ทั้งหมด " + _noOfInstall + " งวด วิธีการชำระ   เงินสด   เช็คสั่งจ่าย                              จำนวน          ฉบับ (ระบุรายละเอียด)", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("งวดที่ 1", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_install1, fontTitle, XBrushes.Black, new XRect(curX+40, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("บาท วันที่  " , fontAddress, XBrushes.Black, new XRect(curX + 100, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_installDate1, fontTitle, XBrushes.Black, new XRect(curX + 150, curY, 50, 20), XStringFormat.TopLeft);
        //if (_isBBL == true)
        //{
        //    gfx.DrawString("ธนาคาร", fontAddress, XBrushes.Black, new XRect(curX + 302, curY, 50, 20), XStringFormat.TopLeft);
        //    gfx.DrawString("☑", fontChkedBox, XBrushes.Black, new XRect(curX + 335, curY - 2, 50, 20), XStringFormat.TopLeft);
        //    gfx.DrawString("BBL  Kbank  SCB  KTB", fontAddress, XBrushes.Black, new XRect(curX + 345, curY, 50, 20), XStringFormat.TopLeft);
        //}
        //else if (_isKBank == true)
        //{
        //    gfx.DrawString("ธนาคาร  BBL  ", fontAddress, XBrushes.Black, new XRect(curX + 302, curY, 50, 20), XStringFormat.TopLeft);
        //    gfx.DrawString("☑", fontChkedBox, XBrushes.Black, new XRect(curX + 362, curY - 2, 50, 20), XStringFormat.TopLeft);
        //    gfx.DrawString("Kbank  SCB  KTB", fontAddress, XBrushes.Black, new XRect(curX + 372, curY, 50, 20), XStringFormat.TopLeft);
        //}
        //else if (_isSCB == true)
        //{
        //    gfx.DrawString("ธนาคาร  BBL  Kbank  ", fontAddress, XBrushes.Black, new XRect(curX + 302, curY, 50, 20), XStringFormat.TopLeft);
        //    gfx.DrawString("☑", fontChkedBox, XBrushes.Black, new XRect(curX + 398, curY - 2, 50, 20), XStringFormat.TopLeft);
        //    gfx.DrawString("SCB  KTB", fontAddress, XBrushes.Black, new XRect(curX + 408, curY, 50, 20), XStringFormat.TopLeft);
        //}
        //else if (_isKTB == true)
        //{
        //    gfx.DrawString("ธนาคาร  BBL  Kbank  SCB  ", fontAddress, XBrushes.Black, new XRect(curX + 302, curY, 50, 20), XStringFormat.TopLeft);
        //    gfx.DrawString("☑", fontChkedBox, XBrushes.Black, new XRect(curX + 428, curY - 2, 50, 20), XStringFormat.TopLeft);
        //    gfx.DrawString("KTB", fontAddress, XBrushes.Black, new XRect(curX + 438, curY, 50, 20), XStringFormat.TopLeft);
        //}
        //else
        //{
        gfx.DrawString("ธนาคาร  BBL  Kbank  SCB  KTB", fontAddress, XBrushes.Black, new XRect(curX + 302, curY, 50, 20), XStringFormat.TopLeft);
        //}
        curY += lineSpace;
        gfx.DrawString("งวดที่ 2" , fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_install2 , fontTitle, XBrushes.Black, new XRect(curX + 40, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("บาท วันที่  " , fontAddress, XBrushes.Black, new XRect(curX + 100, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_installDate2 , fontTitle, XBrushes.Black, new XRect(curX + 150, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("งวดที่ 3", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_install3, fontTitle, XBrushes.Black, new XRect(curX + 40, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("บาท วันที่  ", fontAddress, XBrushes.Black, new XRect(curX + 100, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_installDate3, fontTitle, XBrushes.Black, new XRect(curX + 150, curY, 50, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("งวดที่ 4", fontAddress, XBrushes.Black, new XRect(curX, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_install4, fontTitle, XBrushes.Black, new XRect(curX + 40, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString("บาท วันที่  ", fontAddress, XBrushes.Black, new XRect(curX + 100, curY, 50, 20), XStringFormat.TopLeft);
        gfx.DrawString(_installDate4, fontTitle, XBrushes.Black, new XRect(curX + 150, curY, 50, 20), XStringFormat.TopLeft);
        curY += 25;


        gfx.DrawString("                        ข้าพเจ้า (ซึ่งต่อไปนี้จะเรียกว่า “ผู้ขอสินเชื่อ”) มีความประสงค์จะขอสินเชื่อจาก บริษัท คอมแพร์เอ็กซเพรส นายหน้าประกันภัย (ประเทศไทย) ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("จำกัด (ซึ่งต่อไปนี้จะเรียกว่า “ผู้ให้สินเชื่อ”) เพื่อนำไปชำระค่าเบี้ยประกันภัยตามรายละเอียดที่ระบุไว้ข้างต้น  โดยผู้ขอสินเชื่อตกลงปฏิบัติตามเงื่อนไขและ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ข้อกำหนดการใช้สินเชื่อค่าเบี้ยประกันภัยที่ระบุไว้ตามสัญญานี้ รวมถึงเอกสารแนบท้ายทุกประการ   หากผู้ขอสินเชื่อไม่ปฏิบัติตามหรือประพฤติผิดเงื่อนไขหรือ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ข้อกำหนดต่าง ๆ ผู้ขอสินเชื่อตกลงยินยอมให้สิทธิเต็มที่ทุกประการแก่ผู้ให้สินเชื่อ รวมถึงบุคคลอื่นใดที่เกี่ยวข้องหรือรับมอบอำนาจจากผู้ให้สินเชื่อในอันที่จะ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ยกเลิก หรือถอนกรมธรรม์ของผู้ขอสินเชื่อทันที โดยผู้ขอสินเชื่อยินยอมสละข้อต่อสู้ทั้งหมดที่ผู้ขอสินเชื่อพึงมี  และจะไม่เรียกร้องหรือเอาความแต่อย่างใดกับผู้ให้", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("สินเชื่อรวมถึงบุคคลอื่นด้วย เพื่อเป็นหลักฐานแห่งการนี้ ผู้ขอสินเชื่อจึงได้ลงนามไว้เป็นสำคัญ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ลายมือชื่อผู้สมัคร / ผู้ขอสินเชื่อ                                                                                                        วันที่              /         /      ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ลายมือชื่อสมาชิกผู้รับผิดชอบ                                                                                                          วันที่              /         /      ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("หมายเหตุ", fontComment, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
       
        gfx.DrawString("- หากผู้เอาประกันหรือผู้ขอสินเชื่อผิดนัดชำระจากวันที่กำหนดเกิน 2 วัน บริษัทฯ ขอสงวนสิทธิ์ในการ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        gfx.DrawString("เรียกเก็บค่าปรับล่าช้า 200 บาท / งวด / ครั้ง", fontTitleUnderline, XBrushes.Black, new XRect(curX + 320, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("- หากผู้เอาประกันหรือผู้ขอสินเชื่อผิดนัดชำระ เกิน 5 วัน นับจากวันที่กำหนด หรือชำระเงินสินเชื่อไม่ตรงตามเงื่อนไขการชำระเงินไม่ว่าด้วยเหตุผลใดๆ ก็ตาม ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("บริษัทฯ ขอสงวนสิทธิ์ในการยกเลิกกรมธรรม์โดยมิต้องแจ้งให้ผู้เอาประกันทราบ และผู้ให้สินเชื่อมีสิทธิ์นำกรมธรรม์ประกันภัยในสัญญาให้สินเชื่อฉบับนี้ยกเลิก ทั้งนี้", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ผู้ขอสินเชื่อยินยอมให้ผู้ให้สินเชื่อริบเงินทั้งหมดที่ผู้ขอสินเชื่อได้ชำระให้กับผู้ให้สินเชื่อไปแล้วทั้งหมดหรือนำเงินคืนจากกรมธรรม์มาชำระหนี้เงินสินเชื่อได้ อนึ่ง หาก", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ผู้ขอสินเชื่อ / ผู้เอาประกันภัยร้องขอเพื่อให้กรมธรรม์ประกันภัยยังคงมีผลคุ้มครองต่อไป และผู้ให้สินเชื่อเห็นสมควรที่จะผ่อนผันให้กับผู้ขอสินเชื่อ ผู้ขอสินเชื่อ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("ยินยอมที่จะ", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        gfx.DrawString("จ่ายค่าปรับล่าช้าเป็นจำนวนเงิน 500 บาทต่อครั้ง", fontTitleUnderline, XBrushes.Black, new XRect(curX+40, curY, 500, 20), XStringFormat.TopLeft);
        gfx.DrawString("เพื่อเป็นประกันความเสียหายให้กับผู้ให้สินเชื่อ ทั้งนี้ อัตราค่าปรับกรณีล่าช้าผู้ให้สินเชื่ออาจ", font, XBrushes.Black, new XRect(curX+215, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("พิจารณาเปลี่ยนแปลงได้ตามที่เห็นสมควรโดยมิต้องแจ้งล่วงหน้า", font, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;

        gfx.DrawString("ชื่อบัญชีบริษัท คอมแพร์เอ็กซ์เพรส นายหน้าประกันภัย ประเทศไทย จำกัด (ประเภทบัญชีออมทัพย์)", fontTitle, XBrushes.Black, new XRect(curX, curY, 500, 20), XStringFormat.Center);
        curY += lineSpace;
        gfx.DrawString("1) ธนาคารกรุงเทพ        สาขาสนญ.สีลม    101-8-57590-0      2) ธนาคารกสิกรไทย สาขาสำนักสีลม   789-2-25470-7", fontTitle, XBrushes.Black, new XRect(curX+20, curY, 500, 20), XStringFormat.TopLeft);
        curY += lineSpace;
        gfx.DrawString("3) ธนาคารไทยพาณิชย์ สาขาปาโซ่ทาวเวอร์ 245-2-06286-2      4) ธนาคารกรุงไทย    สาขาสีลม          022-0-15766-9", fontTitle, XBrushes.Black, new XRect(curX+20, curY, 500, 20), XStringFormat.TopLeft);
      
        string _filePath = GetFilePath();
        string filename = _filePath + "CashInstallment_" + _contractNo + "_" + dateTimeNow.ToString("ddMMMyyyy_hhmmss_tt") + ".pdf"; //DateTime.Now.ToString("ddMMMyyyy_hhmmss_tt")
        //document.Save(filename);
        // ...and start a viewer.
        //Response.Redirect(filename);
        System.IO.MemoryStream stream = new System.IO.MemoryStream();
        document.Save(filename);
        stream.Close();
        document.Close();
        return filename;
    }

    protected void LoadPrivateFont(XPrivateFontCollection privateFontCollection, Uri fontUri, string sFontFamilyname)
    {
        //Every font must be added to the global font collection.  There is probably some better way to do this but this was the only method that seemed to work when deploying to any server.
        //If the font has previously been added it will just error out and continue, this does not matter.
        try
        {
            privateFontCollection.Add(fontUri, sFontFamilyname);
        }
        catch
        {
        }
    }

    public static string MappedApplicationPath
    {
        get
        {
            //Returns the absolute path to files from your website - this is needed for font embedding
            string APP_PATH = System.Web.HttpContext.Current.Request.ApplicationPath.ToLower();
            if (APP_PATH == "/")      //a site
                APP_PATH = "/";
            else if (!APP_PATH.EndsWith(@"/")) //a virtual
                APP_PATH += @"/";

            string it = System.Web.HttpContext.Current.Server.MapPath(APP_PATH);
            if (!it.EndsWith(@"\"))
                it += @"\";
            return it;
        }
    } 

    private string GetFilePath()
    {
        string _filePath = CE.Configuration.MyConfigurationManager.GetAppSettingValue("NonGGFileOutputPath").ToString();
        _filePath += "pdfoutput\\carinsurance\\";
        CE.InputOut.MyIO _myIO = new CE.InputOut.MyIO();

        string _curYear = dateTimeNow.ToString("yyyy"); //DateTime.Now.ToString("yyyy");
        if (!_myIO.CheckDirectory(_filePath + _curYear))
        {
            if (_myIO.CreateDirectory(_filePath, _curYear))
            {
                _filePath += _curYear + "\\";
            }
        }
        else
        {
            _filePath += _curYear + "\\";
        }

        string _curMonth = dateTimeNow.ToString("MMMM"); //DateTime.Now.ToString("MMMM");
        if (!_myIO.CheckDirectory(_filePath + _curMonth))
        {
            if (_myIO.CreateDirectory(_filePath, _curMonth))
            {
                _filePath += _curMonth + "\\";
            }
        }
        else
        {
            _filePath += _curMonth + "\\";
        }

        string _todaydate = dateTimeNow.ToString("ddMMMMyyyy"); //DateTime.Now.ToString("ddMMMMyyyy");
        if (!_myIO.CheckDirectory(_filePath + _todaydate))
        {
            if (_myIO.CreateDirectory(_filePath, _todaydate))
            {
                _filePath += _todaydate + "\\";
            }
        }
        else
        {
            _filePath += _todaydate + "\\";
        }

        string _payments = "CashInstallment_" + _todaydate;
        if (!_myIO.CheckDirectory(_filePath + _payments))
        {
            if (_myIO.CreateDirectory(_filePath, _payments))
            {
                _filePath += _payments + "\\";
            }
        }
        else
        {
            _filePath += _payments + "\\";
        }

        return _filePath;
    }
}
